package cn.xerllent.quartz.entity;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;

import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Map;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

@Data
@TableName(value="quartz_job",autoResultMap = true)
public class QuartzJob implements Serializable {

	private static final long serialVersionUID = 3843186536796749140L;

	/** 定时任务ID */
    @TableId
    private Integer id;

    /** 任务名称 */
    @NotBlank(message = "请填写任务名称")
    private String name;
    
    /** Spring job Bean名称，需要继承org.quartz.Job或者QuartzJobBean，简单名称默认放在cn.xerllent.quartz.job里，全classname可以指定任意类名 */
    @NotBlank(message = "请填写任务类全名")
    private String bean;

    /** cron 表达式 */
    @NotBlank(message = "请填写任务类全名")
    private String cron;

    /** 状态：false停用、true启用 */
    @NotNull(message = "enabled不能为null")
    private Boolean enabled;

    /** 参数 */
	@TableField(typeHandler = JacksonTypeHandler.class)
	private Map<String,Object> params;
	//private JSONObject params;

    /** 备注 */
    private String comment;

	@TableField(fill = FieldFill.INSERT)
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private LocalDateTime createtime;

	@TableField(fill = FieldFill.INSERT_UPDATE,update = "now()")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private LocalDateTime updatetime;


}
